#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <time.h>

// int pipe(int pipefd[2]);   -> 执行这个函数之后，得到两个文件描述符

// pid_t fork(void);
int main()
{

    int a = 10;
    int fd[2];
    int ret = pipe(fd);
    if (ret != 0)
    {
        return -1;
    }

    printf("%d %d\n", fd[0], fd[1]);

    pid_t pid = fork();

    if (pid == -1)
    {
        printf("创建进程失败 \n");
    }

    if (pid > 0)
    {

        // printf("parent\n");

        // char buf[32] = "abc";
        // write(fd[1], buf, sizeof(buf));
        // wait(NULL);

        // sleep(20);

        while (1)
        {
            time_t now = time(NULL);
            // char buf[32] = "abc";
            write(fd[1], ctime(&now), 32);
            sleep(2);
        }
    }

    // 子进程
    if (pid == 0)
    {
        // printf("%d %d\n", fd[0], fd[1]);
        // printf("child %d\n", a);

        // char buf[32] = {0};
        // sleep(5);
        // read(fd[0], buf, sizeof(buf));
        // printf("child %s\n", buf);

        while (1)
        {

            char buf[32] = {0};
            read(fd[0], buf, 32);
            printf("child %s\n", buf);
            sleep(1);
        }
    }

    return 0;
}
